/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    // 栈对括号的判断
    const  stack = []
    // 遍历整个字符串
    for (let i = 0; i < s.length; i++) {
        // 存取遍历到的值
        const c = s[i]
        // 判断 左括号  入栈
        if (c == '{' || c == '(' || c == '[')  {
            stack.push(c)
        }else {
            // 特殊情况的判断
            if (stack.length == 0)
                return false
            // 获取栈顶元素
            const top = stack[stack.length - 1]
            if (top == '(' && c == ')'  || top == '[' && c == ']' || top == '{' && c == '}') {
                stack.pop()
            }else {
                return false
            }
        }
    }
    // 判断栈的长度 栈空 代表所有的左括号匹配完毕 栈中还有左括号 则没有匹配
    return stack.length == 0
}

let  s = "()[]{}"
console.log(isValid(s))